/*
 * View.java
 *
 * Created on October 9, 2007, 11:02 AM
 */

package org.osdtsystem.dataset;

/**
 * Interface for a view of a data set. A view provides high-level access to the
 * features in a data set, either all of them or a selection of them. A view may
 * be simple or a composite view composed of a number of subviews. The view has
 * an associated hierarchy, and each data point in the view corresponds to a
 * terminal class in this hierarchy.
 * @author Martin Haulrich and Matthias Buch-Kromann
 */
public interface View {
    /**
     * The number of subviews in the hierarchy.
     * @return the number of subviews
     */
    public int subviews();

    /**
     * The subview with the given index.
     * @param index the index of the subview
     * @return the subview
     */
    public View subview(int index);

    /**
     * A string representation of the feature (or features) corresponding
     * to a given data point in a data set with respect to the view.
     * @param dataset the dataset
     * @param identifier the identifier for the data point
     * @return the string feature
     */
    public String feature(Dataset dataset, int identifier);
}
